package com.dahua.messagesyncsh.business.mitsubishi.common.util;

import com.google.gson.*;

import java.lang.reflect.Type;
import java.util.List;

/**
 * @author smec
 * @description json转换
 * @date 2022/09/15 10:07
 */
public class GsonUtils {
    private static final Gson GSON;

    static {
        GSON=new GsonBuilder().serializeNulls().disableHtmlEscaping().create();
    }

    /**
     * 任意对象转换成json字符串
     * @param obj 任意对象
     * @return json字符串
     */
    public static String toJsonStr(Object obj){
        return GSON.toJson(obj);
    }

    /**
     * json字符串转对象
     * @param json json字符串
     * @param classType 对象映射
     * @param <T> 泛型
     * @return 实体对象
     */
    public static <T> T toEntity(String json,Class<T> classType){
        return GSON.fromJson(json,classType);
    }

    /**
     * json字符串转List
     * @param json json字符串
     * @param type 类型
     * @param <T> 泛型
     * @return 实体对象
     */
    public static <T> List<T> toEntityList(String json,Type type){
        JsonArray jsonArray=new JsonParser().parse(json).getAsJsonArray();
        return GSON.fromJson(jsonArray, type);
    }

    /**
     * json字符串转json
     * @param jsonStr json字符串
     * @return json对象
     */
    public static JsonObject getJson (String jsonStr){
        return new JsonParser().parse(jsonStr).getAsJsonObject();
    }

}
